# ifndef _LIENZO__H_

# define _LIENZO__H_

# include "modelo.h"

# include <list>

# include <fstream>

class Lienzo: public Modelo
{
	public:
		
		Lienzo()
		{
		};
		
		Lienzo(const Lienzo & l): Modelo(l)
		{
			figuras = l.figuras;
		};
		
		~Lienzo()
		{		
			figuras.clear();
		};
		
		list<Figura*> getFiguras()
		{
			return (figuras);
		};
		
		void anyadirFigura(Figura* f, bool = false);
		
		bool quitarFigura(Figura*, bool = false);
		
		string Texto(int = 0);
		
		void leerFichero(string);
		
		list<Figura*> Pintar();
		
		Figura* seleccionar (float, float);
		
		list<Figura*> seleccionar (Punto, Punto);
		
		Grupo* agrupar (list<Figura*>, bool = false);
	
		void desagrupar (Grupo* g, bool = false);
		
		void redimensionar (list<Figura*>, float, float, bool = false);
		
		void trasladar (list<Figura*>, float, float, bool = false);
		
		void Deshacer();
		
		void Rehacer();
		
		void vaciarHistorial()
		{
			while(!historial.empty())
			{
				delete historial.top();
				
				historial.pop();
			}
		}
		
		void vaciarDeshacer()
		{
			while(!deshacer.empty())
			{
				delete deshacer.top();
				
				deshacer.pop();
			}
		}
		
		void Iniciar();
};

# endif
